简单描述一下问题:前端静态资源上线后,当你正处于系统登陆状态,切换页面之类的操作,浏览器端并没有拉取到最新前端代码,导致看到的还是上个迭代的内容。
造成以上问题归咎于触发浏览器缓存策略的机制是否正确。一般排查方向如下:
首先检查前端打包的main.js文件有没有带hash值,没有hash值的话,再经过浏览器缓存策略(强缓存时效内并不会向服务端拉取文件)后检测到服务端文件名没更新就不会去服务器拉取新的文件,导致不能及时更新文件,看到的效果就不够实时。
如果打包后的文件是带了hash值的,这个时候就需要看一下是否做了分包(路由懒加载)。懒加载的main.js是及时更新的。没有分包的main.js做为静态资源一般是在登录界面加载时就返回并缓存了的,后续的操作都是走的浏览器缓存,所以需要重新登陆一下(分包的好处就体现出来了)。
检查web服务器的配置是否设置了强缓存;协商缓存的过期时间等
所以一般频繁更新的文件,如main.js就需要协商缓存,而打包出来的vendor.js一些三方依赖建议设置时效强缓存